package ro.gillardon.commons.mot.train;

import java.time.Duration;
import java.time.LocalDateTime;

import ro.gillardon.commons.OfferDetails;
import ro.gillardon.commons.enums.City;

/**
 * Holds the train specific offer informations.
 *
 * @author davidl
 */
public class TrainOfferDetails extends OfferDetails {

  /** The starting city. */
  private City from;

  /** The destination city. */
  private City to;

  /** The departure date and time. */
  private LocalDateTime start;

  /** The arrival date and time. */
  private LocalDateTime end;

  /** The number of changes needed to be taken to complete the journey. */
  private Integer changes;
  /** The types of trains (RE, IC, ICE...). */
  private String trainTypes;

  /** The overall duration of the journey. */
  private Duration duration;

  /** Default constructor. */
  public TrainOfferDetails() {
    // Default constructor.
  }

  /**
   * Gets the from.
   *
   * @return the from
   */
  public City getFrom() {
    return this.from;
  }

  /**
   * Sets the from.
   *
   * @param from the new from
   */
  public void setFrom(final City from) {
    this.from = from;
  }

  /**
   * Gets the to.
   *
   * @return the to
   */
  public City getTo() {
    return this.to;
  }

  /**
   * Sets the to.
   *
   * @param to the new to
   */
  public void setTo(final City to) {
    this.to = to;
  }

  /**
   * Gets the start.
   *
   * @return the start
   */
  public LocalDateTime getStart() {
    return this.start;
  }

  /**
   * Sets the start.
   *
   * @param start the new start
   */
  public void setStart(final LocalDateTime start) {
    this.start = start;
  }

  /**
   * Gets the end.
   *
   * @return the end
   */
  public LocalDateTime getEnd() {
    return this.end;
  }

  /**
   * Sets the end.
   *
   * @param end the new end
   */
  public void setEnd(final LocalDateTime end) {
    this.end = end;
  }

  /**
   * Gets the changes.
   *
   * @return the changes
   */
  public Integer getChanges() {
    return this.changes;
  }

  /**
   * Sets the changes.
   *
   * @param changes the new changes
   */
  public void setChanges(final Integer changes) {
    this.changes = changes;
  }

  /**
   * Gets the train types.
   *
   * @return the train types
   */
  public String getTrainTypes() {
    return this.trainTypes;
  }

  /**
   * Sets the train types.
   *
   * @param trainTypes the new train types
   */
  public void setTrainTypes(final String trainTypes) {
    this.trainTypes = trainTypes;
  }

  /**
   * Gets the duration.
   *
   * @return the duration
   */
  public Duration getDuration() {
    return this.duration;
  }

  /**
   * Sets the duration.
   *
   * @param duration the new duration
   */
  public void setDuration(final Duration duration) {
    this.duration = duration;
  }

}
